package drds.global_transaction.config;

import com.typesafe.config.Config;
import com.typesafe.config.ConfigFactory;

import drds.common.$;
import drds.common.Constants;
import lombok.extern.slf4j.Slf4j;

@Slf4j
public class FileConfiguration implements Configuration
{

	public static Config config = ConfigFactory.load();

	public FileConfiguration()
	{
	}

	//
	public String getString(String path)
	{
		try
		{
			return config.getString(path);
		} catch (Exception e)
		{
			if (Constants.developMode)
			{
				e.printStackTrace();
			}
			log.error($.printStackTraceToString(e));
			return null;
		}
	}

	//
	@Override
	public int getInt(String dataId, int defaultValue)
	{
		String data = getString(dataId);
		if (data == null)
		{
			return defaultValue;
		}
		return Integer.parseInt(data);
	}

	@Override
	public int getInt(String dataId)
	{
		return getInt(dataId, 0);
	}

	@Override
	public long getLong(String dataId, long defaultValue)
	{
		String data = getString(dataId);
		if (data == null)
		{
			return defaultValue;
		}
		return Long.parseLong(data);
	}

	@Override
	public long getLong(String dataId)
	{
		return getLong(dataId, 0L);
	}

	//
	@Override
	public boolean getBoolean(String dataId, boolean defaultValue)
	{
		String data = getString(dataId);
		if (data == null)
		{
			return defaultValue;
		}
		return Boolean.parseBoolean(data);
	}

	@Override
	public boolean getBoolean(String dataId)
	{
		return getBoolean(dataId, false);
	}

	//
	@Override
	public String getConfig(String dataId, String defaultValue)
	{
		String data = getString(dataId);
		if (data == null)
		{
			return defaultValue;
		}
		return data;
	}

	@Override
	public String getConfig(String dataId)
	{
		return getConfig(dataId, null);
	}

}
